/**
 * 音频视频同步器
 */
define(['async'],function(async){
	var Synchronizer = function(audioObj,layerObj,rsLoader){
		
		//常用变量
		this.interval = 0.1;//同步的时间间隔 100ms-->0.1s
		
		//私有变量
		this._timer = false;
		this._currentTime = 0;
		
		/**
		 * 初始化方法
		 */
		this.init = function(){
			audioObj.on('play',function(){
				this.__startTimer();
			}.bind(this));
			
			audioObj.on('pause',function(){
				this.__stopTimer();
			}.bind(this));
			
			//重新定位后的绘制
			audioObj.on('seeked',function(){
				async.series([
					function(cb){
						audioObj.pause();
						if(this._currentTime > audioObj.getCurrentTime()){
							//清空画布并重绘当前内容
							layerObj.clearAllCanvas();
							var json = rsLoader.getData(0,audioObj.getCurrentTime());
//							console.log(JSON.stringify(json));
							layerObj.draw(json);
						}
						cb();
							
					}.bind(this)
				], function(err, values) {
					audioObj.play();
				}.bind(this));
				
				
			}.bind(this));
			
			
			console.log('初始化同步器成功');
		}
		
		/**
		 * 播放方法
		 */
		this.play = function(){
			audioObj.play();
		}
		
		//私有方法
		/**
		 * 开始计时器
		 */
		this.__startTimer = function(){
			this._timer = setInterval(
				function(){
					console.log('timer run!!!');
					//启动一个一秒的计时器,当触发时，表示有延迟，暂停播放状态
					var json = rsLoader.getData(this._currentTime,audioObj.getCurrentTime() + this.interval);
//					console.log(JSON.stringify(json));
					layerObj.draw(json);
					this._currentTime = audioObj.getCurrentTime() + this.interval;
				}.bind(this)
			,this.interval*1000);
		}
		/**
		 * 停止计时器
		 */
		this.__stopTimer = function(){
			this._timer && clearInterval(this._timer);
			this._timer = null;
		}
	};
	return Synchronizer;
});